<?php

/**
 * turnos actions.
 *
 * @package    nogoya
 * @subpackage turnos
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 2692 2006-11-15 21:03:55Z fabien $
 */
class turnosActions extends sfActions
{
  /**
   * Executes index action
   *
   */
  public function executeIndex()
  {
  }
  public function executeFormulario(){
    // traemos los turnos y los cambios de estados de dicho turno
    $turno = TurnoPeer::retrieveByPK($this->getRequestParameter("turno_id"));
    if (! $turno) {
      $turno = new Turno();
      $turno->setId(0);
      $turno->setMedicoId($this->getRequestParameter("medico_id"));
      $turno->setEstudioId($this->getRequestParameter("estudio_id"));
      $turno->setInicio($this->getRequestParameter("hora"));
      $fecha = FechasDias::formatoToDefault($this->getRequestParameter("fecha"));
      $turno->setDia($fecha);
    }
    $this->turno = $turno;
    /*if ($this->turno)  $this->turnos = Objetos::_toArray(TurnoEstadoPeer::getEstadosPosibles($this->turno));

    $this->medico_id = ($this->turno) ? $this->turno->getMedicoId() : $this->getRequestParameter("medico_id");
    $this->estudio_id = ($this->turno) ? $this->turno->getEstudioId() : $this->getRequestParameter("estudio_id");

    // procesmos las fechas
    $this->fecha = $this->getRequestParameter("fecha");
    $this->hora = $this->getRequestParameter("hora");
    $dia = FechasDias::formatoToDefault($this->fecha);
    $fecha = $dia." ".$this->hora;
    if ($this->estudio) {
     $this->fin = FechasDias::calcularFecha($this->estudio->getDuracion(),"n",1,"H:i",$fecha);
    }
    // buscamos todos los medicos posibles
//    $this->medico = UsuarioPeer::retrieveByPk($this->medico_id);
    //    $this->estudio = EstudioPeer::retrieveByPk($this->estudio_id);
    //
    $this->medicos =
    $this->pacientes = Objetos::_toArray(PacientePeer::doSelect(new Criteria()));


    // busco si para el mismo horario del mismo dia el medico ya tiene otro turno dado
    $this->sobreturno = 0;
    $turno = TurnoPeer::verificarTurnoLibre($this->medico_id,$dia,$this->hora,$this->fin);
    $this->puede_sobreturnos = true;
    if ($turno) {
      $this->puede_sobreturnos = TurnoPeer::verificarPosibleSobreturno($this->medico,$dia,$this->hora,$this->fin);
      $this->sobreturno = 1;
    }*/
  }
  public function executeTurno(){
    $this->turno = TurnoPeer::retrieveByPK($this->getRequestParameter("id"));
    $this->turnos = Objetos::_toArray(TurnoEstadoPeer::getEstadosPosibles($this->turno));
  }
  public function executeCambio(){
    $con = Propel::getConnection();
    try {
      $con->begin();
      $turno = TurnoPeer::retrieveByPk($this->getRequestParameter("id"));
      $estado = TurnoCambioEstadoPeer::getUltimoEstado($turno->getId());
      // desactivamos el estado
      $estado->setUltimo(0);
      $estado->save();
      $turnoestado = new TurnoCambioEstado();
      $turnoestado->setTurnoId($turno->getId());
      $turnoestado->setEstadoId($this->getRequestParameter("estado_id"));
      $turnoestado->save();

      $con->commit();
      $this->error = false;
    } catch (Exception $e) {
      $con->rollback();
      $this->error = $e;
    }

    $this->setTemplate("guardar");
  }
  public function executeGuardar(){
    $con = Propel::getConnection();
    try {
      $con->begin();
      $turno = new Turno();
      $turno->setMedicoId($this->getRequestParameter("medico_id"));
      $turno->setEstudioId($this->getRequestParameter("estudio_id"));
      $turno->setPacienteId($this->getRequestParameter("paciente_id"));
      $fecha = FechasDias::formatoToDefault($this->getRequestParameter("fecha"));
      $turno->setInicio($this->getRequestParameter("hora"));
      $turno->setDia($fecha);
      $turno->setFin($this->getRequestParameter("fin"));
      $turno->setSobreturno($this->getRequestParameter("sobreturno"));
      $turno->save();


      $turnoestado = new TurnoCambioEstado();
      $turnoestado->setTurnoId($turno->getId());
      $turnoestado->setEstadoId($this->getUser()->getEstadoSolicitado()->getId());
      $turnoestado->save();
      $con->commit();
      $this->error = false;
    } catch (Exception $e) {
      $con->rollback();
      $this->error = $e;
    }
}

}
